package com.bcmusic.user.service.impl;

import com.bcmusic.user.dao.EnterpriseIdentificationMapper;
import com.bcmusic.user.pojo.EnterpriseIdentification;
import com.bcmusic.user.service.EnterpriseIdentificationService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import tk.mybatis.mapper.entity.Example;

import java.util.List;

/****
 * @Author:admin
 * @Description:EnterpriseIdentification业务层接口实现类
 * @Date 2019/6/14 0:16
 *****/
@Service
public class EnterpriseIdentificationServiceImpl implements EnterpriseIdentificationService {

    @Autowired
    private EnterpriseIdentificationMapper enterpriseIdentificationMapper;


    /**
     * EnterpriseIdentification条件+分页查询
     * @param enterpriseIdentification 查询条件
     * @param page 页码
     * @param size 页大小
     * @return 分页结果
     */
    @Override
    public PageInfo<EnterpriseIdentification> findPage(EnterpriseIdentification enterpriseIdentification, int page, int size){
        //分页
        PageHelper.startPage(page,size);
        //搜索条件构建
        Example example = createExample(enterpriseIdentification);
        //执行搜索
        return new PageInfo<EnterpriseIdentification>(enterpriseIdentificationMapper.selectByExample(example));
    }

    /**
     * EnterpriseIdentification分页查询
     * @param page
     * @param size
     * @return
     */
    @Override
    public PageInfo<EnterpriseIdentification> findPage(int page, int size){
        //静态分页
        PageHelper.startPage(page,size);
        //分页查询
        return new PageInfo<EnterpriseIdentification>(enterpriseIdentificationMapper.selectAll());
    }

    /**
     * EnterpriseIdentification条件查询
     * @param enterpriseIdentification
     * @return
     */
    @Override
    public List<EnterpriseIdentification> findList(EnterpriseIdentification enterpriseIdentification){
        //构建查询条件
        Example example = createExample(enterpriseIdentification);
        //根据构建的条件查询数据
        return enterpriseIdentificationMapper.selectByExample(example);
    }


    /**
     * EnterpriseIdentification构建查询对象
     * @param enterpriseIdentification
     * @return
     */
    public Example createExample(EnterpriseIdentification enterpriseIdentification){
        Example example=new Example(EnterpriseIdentification.class);
        Example.Criteria criteria = example.createCriteria();
        if(enterpriseIdentification!=null){
            // 商业使用企业身份认证记录id。记录在提交身份认证/修改申请的时候创建。
            if(!StringUtils.isEmpty(enterpriseIdentification.getIdentificationId())){
                    criteria.andEqualTo("identificationId",enterpriseIdentification.getIdentificationId());
            }
            // 商业使用企业编号。关联enterprise表的enterprise_number字段。
            if(!StringUtils.isEmpty(enterpriseIdentification.getEnterpriseNumber())){
                    criteria.andEqualTo("enterpriseNumber",enterpriseIdentification.getEnterpriseNumber());
            }
            // 商业使用企业名称。
            if(!StringUtils.isEmpty(enterpriseIdentification.getEnterpriseName())){
                    criteria.andEqualTo("enterpriseName",enterpriseIdentification.getEnterpriseName());
            }
            // 统一社会信用代码。位数为18位。
            if(!StringUtils.isEmpty(enterpriseIdentification.getEnterpriseUscc())){
                    criteria.andEqualTo("enterpriseUscc",enterpriseIdentification.getEnterpriseUscc());
            }
            // 商业使用企业负责人姓名。
            if(!StringUtils.isEmpty(enterpriseIdentification.getEnterpriseManager())){
                    criteria.andEqualTo("enterpriseManager",enterpriseIdentification.getEnterpriseManager());
            }
            // 商业使用企业银行卡号。银行卡号长度一般在13-19位，国际上也有12位的。
            if(!StringUtils.isEmpty(enterpriseIdentification.getBankCardId())){
                    criteria.andEqualTo("bankCardId",enterpriseIdentification.getBankCardId());
            }
            // 商业使用企业地址。
            if(!StringUtils.isEmpty(enterpriseIdentification.getEnterpriseLocation())){
                    criteria.andEqualTo("enterpriseLocation",enterpriseIdentification.getEnterpriseLocation());
            }
            // 商业使用企业邮箱。用来接收通知。
            if(!StringUtils.isEmpty(enterpriseIdentification.getEnterpriseMail())){
                    criteria.andEqualTo("enterpriseMail",enterpriseIdentification.getEnterpriseMail());
            }
            // 商业使用企业部署节点数量。商业使用企业申请加入联盟链时，申请维护的节点数量。
            if(!StringUtils.isEmpty(enterpriseIdentification.getNodeCount())){
                    criteria.andEqualTo("nodeCount",enterpriseIdentification.getNodeCount());
            }
            // 商业使用企业身份认证状态。0默认为未申请，1为待审核，2为已认证，-1为已驳回，-2为已废除。任意类型管理员修改商业使用企业的信息都默认为已认证状态。

            if(!StringUtils.isEmpty(enterpriseIdentification.getValidStatus())){
                    criteria.andEqualTo("validStatus",enterpriseIdentification.getValidStatus());
            }
            // 提交者编号。默认为提交认证/修改申请的商业使用企业或管理员编号，任意类型管理员修改商业使用企业信息时，申请者为该管理员。
            if(!StringUtils.isEmpty(enterpriseIdentification.getSubmitterNumber())){
                    criteria.andEqualTo("submitterNumber",enterpriseIdentification.getSubmitterNumber());
            }
            // 审核者编号。此处为任意类型的管理员。
            if(!StringUtils.isEmpty(enterpriseIdentification.getAuditorNumber())){
                    criteria.andEqualTo("auditorNumber",enterpriseIdentification.getAuditorNumber());
            }
            // 提交认证/修改申请时间。
            if(!StringUtils.isEmpty(enterpriseIdentification.getSubmitTime())){
                    criteria.andEqualTo("submitTime",enterpriseIdentification.getSubmitTime());
            }
            // 审核认证/修改申请时间。
            if(!StringUtils.isEmpty(enterpriseIdentification.getCheckTime())){
                    criteria.andEqualTo("checkTime",enterpriseIdentification.getCheckTime());
            }
        }
        return example;
    }

    /**
     * 删除
     * @param id
     */
    @Override
    public void delete(Long id){
        enterpriseIdentificationMapper.deleteByPrimaryKey(id);
    }

    /**
     * 修改EnterpriseIdentification
     * @param enterpriseIdentification
     */
    @Override
    public void update(EnterpriseIdentification enterpriseIdentification){
        enterpriseIdentificationMapper.updateByPrimaryKey(enterpriseIdentification);
    }

    /**
     * 增加EnterpriseIdentification
     * @param enterpriseIdentification
     */
    @Override
    public EnterpriseIdentification add(EnterpriseIdentification enterpriseIdentification){
        enterpriseIdentificationMapper.insertSelective(enterpriseIdentification);
        return enterpriseIdentificationMapper.selectByPrimaryKey(enterpriseIdentification.getIdentificationId());
    }

    /**
     * 根据ID查询EnterpriseIdentification
     * @param id
     * @return
     */
    @Override
    public EnterpriseIdentification findById(Long id){
        return  enterpriseIdentificationMapper.selectByPrimaryKey(id);
    }

    /**
     * 查询EnterpriseIdentification全部数据
     * @return
     */
    @Override
    public List<EnterpriseIdentification> findAll() {
        return enterpriseIdentificationMapper.selectAll();
    }

    @Override
    public EnterpriseIdentification updateSelective(EnterpriseIdentification enterpriseIdentification) {
        enterpriseIdentificationMapper.updateByPrimaryKeySelective(enterpriseIdentification);
        return enterpriseIdentificationMapper.selectByPrimaryKey(enterpriseIdentification.getIdentificationId());
    }
}
